#include "ParameterCollector.h"
#include "LayoutDialog.h"

#include <algorithm>

using namespace std;

void ParameterCollector::addParameter(string id, string name, string type,string value)
{
		LayoutParameter *lp = new LayoutParameter(id,name,type,value);
		_parameterList.push_back(lp);
}
void ParameterCollector::addParameter(string id, string name, string type,vector<string> str)
{
	LayoutParameter *lp = new LayoutParameter(id,name,type,str);
	_parameterList.push_back(lp);
	LayoutDialog::getInstance()->setupLayoutParameterGUI("");
}

void ParameterCollector::updateDefaultValue(string id, vector<string> str)
{
	getParameter(id)->getParameterGUI()->updateValue(str);
}

void ParameterCollector::updateDefaultValue(string id, string str)
{
	getParameter(id)->getParameterGUI()->updateValue(str);
}

vector<LayoutParameter*> ParameterCollector::getParameterList()
{
	return _parameterList;
}

LayoutParameter*  ParameterCollector::getParameter(string id)
{
	for (int i = 0;i < _parameterList.size();++i)
	{
		if(_parameterList.at(i)->getParameterID() == id)
		{
			return _parameterList.at(i);
		}
	}
	return NULL;
}

string ParameterCollector::getParameterValue(string id)
{
	for (int i = 0;i < _parameterList.size();++i)
	{
		if(_parameterList.at(i)->getParameterID() == id)
		{
			return _parameterList.at(i)->getParameterValue();
		}
	}
	return "";
}

vector<DIVA_VM*> ParameterCollector::getParameterVM(string id)
{
	for (int i = 0;i < _parameterList.size();++i)
	{
		if(_parameterList.at(i)->getParameterID() == id)
		{
			return _parameterList.at(i)->getParameterVM();
		}
	}
}

void ParameterCollector::setValue()
{
	for (int i = 0;i < _parameterList.size();++i)
	{
		_parameterList.at(i)->setValue();
	}
}

void ParameterCollector::addEvent(string id,string event1,Callback callback)
{
	getParameter(id)->getParameterGUI()->addEvent(event1,callback);
}

void ParameterCollector::clearValue(string id){
	getParameter(id)->getParameterGUI()->clearValue();
}

void ParameterCollector::addEvent(std::string fid,std::string tid,std::string eventType)
{

}
